using System;
using System.Collections.Generic;
using System.Text;

using Mud.Server.Users;
using Mud.Server.Physical;

namespace Mud.Server
{

    #region Login related event arguments

    public sealed class ClientConnectedEventArgs : EventArgs
    {
        /// <summary>
        /// Client.
        /// </summary>
		public Client.IClient Client
        {
            get { return _client; }
        }
		private Client.IClient _client;

		public ClientConnectedEventArgs(Client.IClient client)
        {
            if (client == null)
                throw new ArgumentNullException("client");
            _client = client;
        }
    }

    public sealed class ClientDisconnectedEventArgs : EventArgs
    {
        /// <summary>
        /// Client.
        /// </summary>
		public Client.IClient Client
        {
            get { return _client; }
        }
		private Client.IClient _client;

		public ClientDisconnectedEventArgs(Client.IClient client)
        {
            if (client == null)
                throw new ArgumentNullException("client");
            _client = client;
        }
    }

    public sealed class PlayerCharacterEnteredGameEventArgs : EventArgs
    {
        /// <summary>
        /// Player character.
        /// </summary>
        public Creature PlayerCharacter
        {
            get { return _playerCharacter; }
        }
        private Creature _playerCharacter;


        public PlayerCharacterEnteredGameEventArgs(Creature character)
        {
            if (character == null)
                throw new ArgumentNullException("character");
            _playerCharacter = character;
        }
    }

    public sealed class PlayerCharacterExitedGameEventArgs : EventArgs
    {
        /// <summary>
        /// Player character.
        /// </summary>
        public Creature PlayerCharacter
        {
            get { return _playerCharacter; }
        }
        private Creature _playerCharacter;

        public PlayerCharacterExitedGameEventArgs(Creature character)
        {
            if (character == null)
                throw new ArgumentNullException("character");
            _playerCharacter = character;
        }
    }

    #endregion

    #region Server state changes event arguments

    public sealed class ServerStoppingEventArgs : EventArgs
    {
    }

    #endregion

}
